const char *wm_class;
const char *wm_instance;
const char *sandbox_id;
+ g_autofree char *app_prefix = NULL;
appsys = shell_app_system_get_default ();
+
sandbox_id = meta_window_get_sandboxed_app_id (window);
+ if (sandbox_id)
+ app_prefix = g_strdup_printf ("%s.", sandbox_id);
/* Notes on the heuristics used here:
much of the complexity here comes from the desire to support
/* first try a match from WM_CLASS (instance part) to StartupWMClass */
wm_instance = meta_window_get_wm_class_instance (window);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_instance);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
/* then try a match from WM_CLASS to StartupWMClass */
wm_class = meta_window_get_wm_class (window);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_class);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
/* then try a match from WM_CLASS (instance part) to .desktop */
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_instance);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
/* finally, try a match from WM_CLASS to .desktop */
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_class);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
return NULL;